SystemC is a system-level modeling language used for simulating the behavior of a system such as a system on a chip (SoC). SystemC allows a system to be described at different levels of abstraction. More specifically, SystemC is a language built in standard C++ by extending the C++ language with the use of class libraries. SystemC provides a system design and verification language that spans hardware and software. Example uses of SystemC include modeling partitioning of a simulation system, evaluating and verifying the assignment of blocks to hardware or software implementations, and measuring the interactions between and among simulated components.
Traditionally, a host compiler generates SystemC system simulations by statically linking together precompiled object files. Prior to execution of the simulation, the host compiler compiles simulation components into a simulation executable file. References by the simulation components to each other are bound to addresses internal to the simulation executable. Statically linked simulations are inconvenient for end users. When a component of the simulation is modified, the addresses associated with the bound references are no longer necessarily valid. Accordingly, the entire statically linked simulation is recompiled to relink references to the correct address, which results in significant time wasted for an end user managing simulations. Additionally, statically linked simulations expose the namespace of simulation components to other simulation components. As a result, different versions of a component cannot be simulated because these components use the same variable and function names. This limitation of static linking hampers simulation of systems with multiple subsystems.